﻿using BEL;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Web_Guia_Digital_Georeferenciada.Mantenimientos
{
    public partial class MantenimientoDeComercios : System.Web.UI.Page
    {
        Rubro _rubros = new Rubro();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                CargarDatos();
                LimpiarGrillas();
                Usuario usu = (Usuario)Session["Usuario"];
                if (usu != null)
                {
                    cmdAceptar.Text = "Modificar";
                    CargarComercio(usu);
                }
            }
        }

        private void CargarComercio(Usuario usu)
        {
            Comercio com = Comercio.ObtenerComercioPorUsuario(usu.UsuarioId);
            txtId.Text = com.ComercioId.ToString();
            txtNombre.Text = com.ComercioNombre;
            txtRut.Text = com.ComercioRUT;
            txtDireccion.Text = com.ComercioDireccion;
            txtTelefono.Text = com.ComercioTelefono;
            txtWeb.Text = com.ComercioWeb;
            cmbBarrio.SelectedItem.Text = com.Barrio.BarNombre;
            txtEmail.Text = com.ComercioEmail;
            txtWeb.Text = com.ComercioWeb;
            txtLongitud.Text = com.ComercioCoordenadas;
            foreach (Tag tg in com.LstTags)
            {
                LstTags.Items.Add(tg.TagNombre);
            }
            txtAnuncio.Text = com.ComercioAnuncio;
            txtNombreUsuario.Text = usu.UsuarioNombre;
            GridSucursales.DataSource = com.Sucursales;
            GridSucursales.DataBind();
            GridRubros.DataSource = com.Rubros;
            GridRubros.DataBind();
            GridRedesSociales.DataSource = com.LstRedesSociales;
            GridRedesSociales.DataBind();
        }
        protected void cmdAceptar_Click(object sender, EventArgs e)
        {
            string Extension = string.Empty;
            string Nombre = string.Empty;

            Boolean hayError = false;
            try
            {

                #region Validar Campos.

                if (!FileUpload.HasFile)
                {
                    hayError = true;
                    FileUpload.BackColor = System.Drawing.Color.Red;
                }
                else
                {
                    FileUpload.BackColor = System.Drawing.Color.White;
                }

                if (string.IsNullOrEmpty(Convert.ToString(txtNombre.Text)))
                {
                    hayError = true;
                    txtNombre.BackColor = System.Drawing.Color.Red;
                }
                else
                {
                    txtNombre.BackColor = System.Drawing.Color.White;
                }

                if (string.IsNullOrEmpty(Convert.ToString(txtRut.Text)))
                {
                    hayError = true;
                    txtRut.BackColor = System.Drawing.Color.Red;
                }
                else
                {
                    txtRut.BackColor = System.Drawing.Color.White;
                }
                if (string.IsNullOrEmpty(Convert.ToString(txtDireccion.Text)))
                {
                    hayError = true;
                    txtDireccion.BackColor = System.Drawing.Color.Red;
                }
                else
                {
                    txtDireccion.BackColor = System.Drawing.Color.White;
                }
                if (string.IsNullOrEmpty(Convert.ToString(txtTelefono.Text)))
                {
                    hayError = true;
                    txtTelefono.BackColor = System.Drawing.Color.Red;
                }
                else
                {
                    txtTelefono.BackColor = System.Drawing.Color.White;
                }
                if (string.IsNullOrEmpty(Convert.ToString(txtWeb.Text)))
                {
                    hayError = true;
                    txtWeb.BackColor = System.Drawing.Color.Red;
                }
                else
                {
                    txtWeb.BackColor = System.Drawing.Color.White;
                }
                if (string.IsNullOrEmpty(Convert.ToString(txtLongitud.Text)))
                {
                    hayError = true;
                    txtLongitud.BackColor = System.Drawing.Color.Red;
                }
                else
                {
                    txtLongitud.BackColor = System.Drawing.Color.White;
                }
                if (string.IsNullOrEmpty(Convert.ToString(txtEmail.Text)))
                {
                    hayError = true;
                    txtEmail.BackColor = System.Drawing.Color.Red;
                }
                else
                {
                    txtEmail.BackColor = System.Drawing.Color.White;
                }
                if (string.IsNullOrEmpty(Convert.ToString(txtAnuncio.Text)))
                {
                    hayError = true;
                    txtAnuncio.BackColor = System.Drawing.Color.Red;
                }
                else
                {
                    txtAnuncio.BackColor = System.Drawing.Color.White;
                }
                if (cmbBarrio.SelectedIndex == -1)
                {
                    hayError = true;
                    cmbBarrio.BackColor = System.Drawing.Color.Red;
                }
                else
                {
                    cmbBarrio.BackColor = System.Drawing.Color.White;
                }
                if (GridRubros.Rows.Count == 0)
                {
                    hayError = true;
                    cmbRubros.BackColor = System.Drawing.Color.Red;
                }
                else
                {
                    cmbRubros.BackColor = System.Drawing.Color.White;
                }
                if (LstTags.Items.Count == 0)
                {
                    hayError = true;
                    LstTags.BackColor = System.Drawing.Color.Red;
                }
                else
                {
                    LstTags.BackColor = System.Drawing.Color.White;
                }
                if (string.IsNullOrEmpty(Convert.ToString(txtNombreUsuario.Text)))
                {
                    hayError = true;
                    txtNombreUsuario.BackColor = System.Drawing.Color.Red;
                }
                else
                {
                    txtNombreUsuario.BackColor = System.Drawing.Color.White;
                }
                if (string.IsNullOrEmpty(Convert.ToString(txtPassword.Text)))
                {
                    hayError = true;
                    txtPassword.BackColor = System.Drawing.Color.Red;
                }
                else
                {
                    txtPassword.BackColor = System.Drawing.Color.White;
                }

                #endregion
                if (!hayError)
                {

                    Nombre = FileUpload.FileName;
                    Extension = Path.GetExtension(Nombre);
                    if (ValidarExtension(Extension))
                    {
                        #region CargoDatos
                        Comercio comercio = new Comercio();
                        comercio.ComercioCoordenadas = Convert.ToString(txtLongitud.Text);
                        comercio.ComercioDireccion = Convert.ToString(txtDireccion.Text);
                        comercio.ComercioEmail = Convert.ToString(txtEmail.Text);
                        comercio.ComercioNombre = Convert.ToString(txtNombre.Text);
                        comercio.ComercioRUT = Convert.ToString(txtRut.Text);
                        comercio.ComercioTelefono = Convert.ToString(txtTelefono.Text);
                        comercio.ComercioWeb = Convert.ToString(txtWeb.Text);
                        comercio.ComercioAnuncio = Convert.ToString(txtAnuncio.Text);
                        comercio.Barrio = new Barrio();
                        comercio.Barrio.BarId = Convert.ToInt32(cmbBarrio.SelectedValue);
                        comercio.Barrio.BarNombre = Convert.ToString(cmbBarrio.SelectedItem.Text);

                        // Cargo redes sociales.
                        comercio.LstRedesSociales = new List<RedSocial>();


                        if ((DataTable)Session["RedesSociales"] != null)
                        {
                            foreach (DataRow row in ((DataTable)Session["RedesSociales"]).Rows)
                            {
                                RedSocial redSocial = new RedSocial();
                                if (!string.IsNullOrEmpty(Convert.ToString(row["RedId"])))
                                {
                                    redSocial.RedId = Convert.ToInt32(row["RedId"]);
                                }
                                if (!string.IsNullOrEmpty(Convert.ToString(row["RedNombre"])))
                                {
                                    redSocial.RedNombre = Convert.ToString(row["RedNombre"]);
                                }
                                if (!string.IsNullOrEmpty(Convert.ToString(row["RedDescripcion"])))
                                {
                                    redSocial.RedDescripcion = Convert.ToString(row["RedDescripcion"]);
                                }
                                comercio.LstRedesSociales.Add(redSocial);
                            }
                        }
                        comercio.LstTags = new List<Tag>();

                        foreach (ListItem it in LstTags.Items)
                        {
                            Tag tag = new Tag();
                            tag.TagNombre = it.Text;
                            comercio.LstTags.Add(tag);

                        }
                        comercio.Rubros = new List<Rubro>();
                        if ((DataTable)Session["Rubros"] != null)
                        {
                            foreach (DataRow row in ((DataTable)Session["Rubros"]).Rows)
                            {
                                Rubro rubro = new Rubro();

                                rubro.RubId = Convert.ToInt32(row["RubId"]);
                                rubro.RubNombre = Convert.ToString(row["RubNombre"]);
                                comercio.Rubros.Add(rubro);
                            }
                        }
                        comercio.Sucursales = new List<Comercio>();
                        if ((DataTable)Session["Sucursales"] != null)
                        {
                            foreach (DataRow row in ((DataTable)Session["Sucursales"]).Rows)
                            {
                                Comercio com = new Comercio();

                                com.ComercioId = Convert.ToInt32(row["ComercioId"]);
                                com.ComercioNombre = Convert.ToString(row["ComercioNombre"]);
                                comercio.Sucursales.Add(com);
                            }
                        }
                        Usuario usu = new Usuario();
                        if ((Usuario)Session["Usuario"] != null)
                        {
                            usu.UsuarioId = ((Usuario)Session["Usuario"]).UsuarioId;
                        }
                        usu.UsuarioNombre = Convert.ToString(txtNombreUsuario.Text);
                        usu.UsuarioPassword = Convert.ToString(txtPassword.Text);
                        usu.Rol = Usuario.Roles.UsuarioComercio;
                        comercio.Usuario = usu;

                        if (!string.IsNullOrEmpty(txtId.Text))
                        {
                            comercio.ComercioId = Convert.ToInt32(txtId.Text);
                        }
                        #endregion
                        if ((Usuario)Session["Usuario"] == null)
                        {
                            if (comercio.AltaComercio(comercio))
                            {
                                lblResultado.Text = "El comercio se dio de alta correctamente";
                                Session["Usuario"] = usu;
                                Response.Redirect("~/PaginaPrincipal.aspx");

                            }
                            else
                            {
                                lblResultado.Text = "Ocurrió un problema al dar de alta el comercio";

                            }
                        }
                        else
                        {
                            if (comercio.ModificarComercio(comercio))
                            {
                                Response.Redirect("~/PaginaPrincipal.aspx");

                            }
                            else
                            {
                                lblResultado.Text = "Ocurrió un problema al modificar comercio";

                            }
                        }
                    }
                    else
                    {
                        lblResultado.Text = "Existen errores en el ingreso de datos.";
                    }
                }
                else
                {
                    lblResultado.Text = "Existen errores en el ingreso de datos.";
                }
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }
        protected void cmdAñadirRubro_Click(object sender, EventArgs e)
        {
            try
            {
                DataTable dt = new DataTable();
                dt.Columns.Add(new DataColumn("RubId", System.Type.GetType("System.Int32")));
                dt.Columns.Add(new DataColumn("RubNombre", System.Type.GetType("System.String")));


                if (GridRubros.Rows.Count > 0)
                {
                    dt = (DataTable)Session["Rubros"];
                }

                DataRow row = dt.NewRow();

                row["RubId"] = Convert.ToInt32(cmbRubros.SelectedValue);
                row["RubNombre"] = Convert.ToString(cmbRubros.SelectedItem.Text);
                dt.Rows.Add(row);

                Session["Rubros"] = dt;
                GridRubros.DataSource = dt;
                GridRubros.DataBind();

                // limpio campos
                this.cmbRubros.SelectedIndex = -1;


            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }
        private Boolean ValidarExtension(string sExtension)
        {
            Boolean verif = false;
            switch (sExtension)
            {
                case ".jpg":
                case ".jpeg":
                case ".png":
                case ".gif":
                case ".bmp":
                    verif = true;
                    break;
                default:
                    verif = false;
                    break;
            }
            return verif;
        }
        protected void cmdBuscarSucursales_Click(object sender, EventArgs e)
        {
            try
            {
                DataTable dt = new DataTable();
                dt.Columns.Add(new DataColumn("ComercioId", System.Type.GetType("System.Int32")));
                dt.Columns.Add(new DataColumn("ComercioNombre", System.Type.GetType("System.String")));
                Comercio com = new Comercio();
                com = com.ObtenerComercioPorNombre(Convert.ToString(txtBuscarSucursales.Text));


                if (GridSucursales.Rows.Count > 0)
                {
                    dt = (DataTable)Session["Sucursales"];
                }

                DataRow row = dt.NewRow();
                row["ComercioId"] = com.ComercioId;
                row["ComercioNombre"] = com.ComercioNombre;
                dt.Rows.Add(row);

                Session["Sucursales"] = dt;
                GridSucursales.DataSource = dt;
                GridSucursales.DataBind();

                // limpio campos
                this.txtBuscarSucursales.Text = "";

            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }
        private void CargarDatos()
        {
            try
            {
                //Cargo combo de barrios
                Barrio barrio = new Barrio();
                List<Barrio> lstBarrios = barrio.BuscarBarrios();
                cmbBarrio.DataSource = lstBarrios;

                foreach (Barrio bar in lstBarrios)
                {
                    cmbBarrio.Items.Add(new ListItem(bar.BarNombre, Convert.ToString(bar.BarId)));
                }

                //Cargo combo de Rubros
                Rubro rubro = new Rubro();
                List<Rubro> lstRubros = rubro.BuscarRubros();
                cmbRubros.DataSource = lstRubros;

                foreach (Rubro rowrubro in lstRubros)
                {
                    cmbRubros.Items.Add(new ListItem(rowrubro.RubNombre, Convert.ToString(rowrubro.RubId)));
                }

                //Cargo combo de Redes sociales
                RedSocial red = new RedSocial();
                List<RedSocial> lstRedSocial = red.BuscarRedesSociales();
                cmbRedSocial.DataSource = lstRedSocial;

                foreach (RedSocial rowred in lstRedSocial)
                {
                    cmbRedSocial.Items.Add(new ListItem(rowred.RedNombre, Convert.ToString(rowred.RedId)));
                }


            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }
        private void LimpiarGrillas()
        {
            if (!string.IsNullOrEmpty(Convert.ToString(Request.QueryString["Comercio"])))
            {
                Session["Sucursales"] = null;
                GridSucursales.DataSource = null;
                GridSucursales.DataBind();
            }
        }
        protected void cmdAgregarTag_Click(object sender, EventArgs e)
        {
            bool error = false;
            try
            {
                for (int i = 0; i < LstTags.Items.Count; i++)
                {
                    if (Convert.ToString(LstTags.Items[i]) == txtAgregarTag.Text)
                    {
                        this.lblTags.Text = "El tag ya se encuentra en la lista";
                        txtAgregarTag.Text = "";
                        error = true;
                    }
                }
                if (!error)
                {
                    LstTags.Items.Add(txtAgregarTag.Text);
                    txtAgregarTag.Text = "";
                }
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }
        protected void cmdAgregarRedSocial_Click(object sender, EventArgs e)
        {
            try
            {
                if (!string.IsNullOrEmpty(Convert.ToString(txtAgregarRedSocial.Text)))
                {
                    DataTable dt = new DataTable();
                    dt.Columns.Add(new DataColumn("RedId", System.Type.GetType("System.Int32")));
                    dt.Columns.Add(new DataColumn("RedNombre", System.Type.GetType("System.String")));
                    dt.Columns.Add(new DataColumn("RedDescripcion", System.Type.GetType("System.String")));


                    if (GridRedesSociales.Rows.Count > 0)
                    {
                        dt = (DataTable)Session["RedesSociales"];
                    }

                    DataRow row = dt.NewRow();

                    row["RedId"] = Convert.ToInt32(cmbRedSocial.SelectedValue);
                    row["RedNombre"] = Convert.ToString(cmbRedSocial.SelectedItem.Text);
                    row["RedDescripcion"] = Convert.ToString(txtAgregarRedSocial.Text);
                    dt.Rows.Add(row);

                    Session["RedesSociales"] = dt;
                    GridRedesSociales.DataSource = dt;
                    GridRedesSociales.DataBind();

                    // limpio campos
                    txtAgregarRedSocial.Text = "";
                    this.cmbRedSocial.SelectedIndex = -1;

                }
                else
                {
                    lblRedSocial.Text = "Debe ingresar el nombre para una red social";
                }
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }
    }
}